<html>
<head><meta charset="utf-8"><title>Probing incremental compilation · t-compiler/wg-self-profile · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/index.html">t-compiler/wg-self-profile</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html">Probing incremental compilation</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="217415650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217415650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217415650">(Nov 20 2020 at 15:33)</a>:</h4>
<p>Hi all, just tinkering around with the awesome profiling tool you've put together. I was wondering, is it normal to see a large amount of time spent in the <code>monomorphization_collector</code> during an incremental update (e.g. by adding a single comment)?</p>
<p>I have ~20s incremental build from adding a comment and it seems like roughly half is in that step and half in linking</p>



<a name="217416026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416026">(Nov 20 2020 at 15:35)</a>:</h4>
<p>That does seem odd! Can you share the output of <code>summarize summarize</code>?</p>



<a name="217416248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416248">(Nov 20 2020 at 15:37)</a>:</h4>
<p><a href="/user_uploads/4715/SW_Pkbgjx5hbmEcobLFkKKv2/share_summarize_table.txt">share_summarize_table.txt</a></p>



<a name="217416279"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416279" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416279">(Nov 20 2020 at 15:37)</a>:</h4>
<p>is this format ok?</p>



<a name="217416494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416494">(Nov 20 2020 at 15:38)</a>:</h4>
<p>I've been messing around with this for a day and oddly the compilation time has fluctuated quite a bit (15-30s). Probably from a flag or some other thing I've done myself.</p>



<a name="217416634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416634">(Nov 20 2020 at 15:40)</a>:</h4>
<p>Yeah, that's fine!</p>



<a name="217416826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416826">(Nov 20 2020 at 15:41)</a>:</h4>
<p>It looks like in that run, <code>monomorphization_collector</code> took 1 microsecond.</p>



<a name="217416897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416897">(Nov 20 2020 at 15:41)</a>:</h4>
<p>Is that the run you saw this in? </p>
<blockquote>
<p>I have ~20s incremental build from adding a comment and it seems like roughly half is in that step and half in linking</p>
</blockquote>



<a name="217416969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217416969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217416969">(Nov 20 2020 at 15:42)</a>:</h4>
<p>When I view the <code>crox</code> in Chrome, it is the parent of a lot of operations</p>



<a name="217417075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417075">(Nov 20 2020 at 15:42)</a>:</h4>
<p>Oh gotcha</p>



<a name="217417083"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417083" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417083">(Nov 20 2020 at 15:42)</a>:</h4>
<p>but yes, I think this is the run in question</p>



<a name="217417085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417085">(Nov 20 2020 at 15:42)</a>:</h4>
<p>That's expected</p>



<a name="217417128"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417128" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417128">(Nov 20 2020 at 15:43)</a>:</h4>
<p>basically that operation is what triggers codegeneration and optimizations to run</p>



<a name="217417166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417166">(Nov 20 2020 at 15:43)</a>:</h4>
<p>Which is often where the majority of time is spent compiling Rust code.</p>



<a name="217417178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417178">(Nov 20 2020 at 15:43)</a>:</h4>
<p><a href="/user_uploads/4715/54H0_TXheE2_CL3aA2_HlXrA/Screenshot-from-2020-11-20-10-43-22.png">Screenshot-from-2020-11-20-10-43-22.png</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/54H0_TXheE2_CL3aA2_HlXrA/Screenshot-from-2020-11-20-10-43-22.png" title="Screenshot-from-2020-11-20-10-43-22.png"><img src="/user_uploads/4715/54H0_TXheE2_CL3aA2_HlXrA/Screenshot-from-2020-11-20-10-43-22.png"></a></div>



<a name="217417580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417580">(Nov 20 2020 at 15:46)</a>:</h4>
<p>Looks like <code>normalize_projection_ty</code> is taking 5.5 seconds.</p>



<a name="217417612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417612">(Nov 20 2020 at 15:46)</a>:</h4>
<p>That's basically time spent typechecking.</p>



<a name="217417641"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417641" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417641">(Nov 20 2020 at 15:46)</a>:</h4>
<p>Is this a lot of code? Like 10,000s of lines?</p>



<a name="217417651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417651">(Nov 20 2020 at 15:46)</a>:</h4>
<p>Or much smaller?</p>



<a name="217417942"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217417942" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217417942">(Nov 20 2020 at 15:48)</a>:</h4>
<p>There's a decent amount of dependencies but my actual library code is probably around 1K</p>



<a name="217418000"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217418000" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217418000">(Nov 20 2020 at 15:49)</a>:</h4>
<p>1.9K according to <code>cargo-loc</code></p>



<a name="217418244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217418244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217418244">(Nov 20 2020 at 15:51)</a>:</h4>
<p>doesn't <code>cargo check</code> need to do typechecking as well? why would it be so fast (~160 millis) in comparison</p>



<a name="217418785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217418785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217418785">(Nov 20 2020 at 15:54)</a>:</h4>
<p>maybe I've shot myself in the foot using proc macros? it's a web project and most of the code is behind proc macros like</p>
<div class="codehilite"><pre><span></span><code>#[path(&quot;x&quot;)]
fn get( ... )
</code></pre></div>



<a name="217419241"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217419241" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217419241">(Nov 20 2020 at 15:57)</a>:</h4>
<p><span class="user-mention silent" data-user-id="351260">pl</span> <a href="#narrow/stream/187831-t-compiler.2Fwg-self-profile/topic/Probing.20incremental.20compilation/near/217418244">said</a>:</p>
<blockquote>
<p>doesn't <code>cargo check</code> need to do typechecking as well? why would it be so fast (~160 millis) in comparison</p>
</blockquote>
<p>I would think so... that does seem very strange.</p>



<a name="217419346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217419346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217419346">(Nov 20 2020 at 15:58)</a>:</h4>
<p>You might want to try running with <code>-Zself-profile-events=default,args</code> which will record a lot more data about what exactly is being processed.</p>
<p><a href="https://doc.rust-lang.org/unstable-book/compiler-flags/self-profile-events.html">https://doc.rust-lang.org/unstable-book/compiler-flags/self-profile-events.html</a></p>



<a name="217421684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217421684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217421684">(Nov 20 2020 at 16:12)</a>:</h4>
<p>arg0"Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [], reveal: All }, value: ProjectionTy { substs: [warp::hyper::Server&lt;warp::hyper::server::conn::AddrIncoming, warp::hyper::service::make::MakeServiceFn&lt;[closure@warp::Server&lt;warp::trace::internal::WithTrace&lt;[closure@warp::trace::request::{closure#0}], warp::filter::or::Or&lt;warp::filter::or::Or&lt;warp::filter::or::Or&lt;warp::filter::or::Or&lt;warp::filter::or::Or&lt;warp::filter::or::Or&lt;warp::filter::and::And&lt;warp::filter::FilterFn&lt;[closure@warp::path:<span aria-label="end" class="emoji emoji-1f51a" role="img" title="end">:end:</span>:{closure#0}]&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filters::any::Any, [closure@warp::fs::file&lt;&amp;str&gt;::{closure#0}]&gt;, warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_modified_since::IfModifiedSince&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_modified_since::IfModifiedSince&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_unmodified_since::IfUnmodifiedSince&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_unmodified_since::IfUnmodifiedSince&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_range::IfRange&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_range::IfRange&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::range::Range&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::range::Range&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, [closure@warp::fs::conditionals::{closure#0}]&gt;&gt;, [closure@warp::fs::file&lt;&amp;str&gt;::{closure#1}]&gt;&gt;, warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filters::any::Any, warp::path::Exact&lt;warp::path::internal::Opaque&lt;main::{closure#0}::__StaticPath&gt;&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::path:<span aria-label="end" class="emoji emoji-1f51a" role="img" title="end">:end:</span>:{closure#0}]&gt;&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filters::any::Any, [closure@warp::fs::file&lt;&amp;str&gt;::{closure#0}]&gt;, warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_modified_since::IfModifiedSince&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_modified_since::IfModifiedSince&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_unmodified_since::IfUnmodifiedSince&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_unmodified_since::IfUnmodifiedSince&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_range::IfRange&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_range::IfRange&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::range::Range&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::range::Range&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, [closure@warp::fs::conditionals::{closure#0}]&gt;&gt;, [closure@warp::fs::file&lt;&amp;str&gt;::{closure#1}]&gt;&gt;&gt;, warp::filter::and::And&lt;warp::path::Exact&lt;warp::path::internal::Opaque&lt;&amp;str&gt;&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::FilterFn&lt;[closure@warp::filters::method::method_is&lt;[closure@warp::get::{closure#0}]&gt;::{closure#0}]&gt;, warp::filter::and_then::AndThen&lt;warp::filter::FilterFn&lt;[closure@warp::path::tail::{closure#0}]&gt;, [closure@warp::fs::path_from_tail::{closure#0}]&gt;&gt;, warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_modified_since::IfModifiedSince&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_modified_since::IfModifiedSince&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_unmodified_since::IfUnmodifiedSince&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_unmodified_since::IfUnmodifiedSince&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::if_range::IfRange&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::if_range::IfRange&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional2&lt;headers::common::range::Range&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;headers::common::range::Range&gt;, std::convert::Infallible&gt;&gt;&gt;::{closure#0}]&gt;&gt;, [closure@warp::fs::conditionals::{closure#0}]&gt;&gt;, fn(warp::fs::ArcPath, warp::fs::Conditionals) -&gt; impl std::marker::Send+warp::Future {warp::fs::file_reply}&gt;&gt;&gt;, warp::cors::internal::CorsFilter&lt;warp::filter::or::Or&lt;warp::filter::or::Or&lt;warp::filter::or::Or&lt;warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filters::any::Any, [closure@pickpocket::audience::AudienceCtrl::routes::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional&lt;std::string::String&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;std::string::String&gt;, warp::Rejection&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filters::any::Any, [closure@pickpocket::auth::authorization&lt;pickpocket::audience::AudienceCtrl&gt;::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header&lt;std::string::String&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::string::String, warp::Rejection&gt;&gt;&gt;::{closure#0}]&gt;&gt;, [closure@pickpocket::auth::authorization&lt;pickpocket::audience::AudienceCtrl&gt;::{closure#1}]&gt;&gt;, warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filters::any::Any, warp::path::Exact&lt;warp::path::internal::Opaque&lt;pickpocket::audience::AudienceCtrl::routes::__StaticPath&gt;&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::path::filter_segment&lt;[closure@warp::path::param&lt;i64&gt;::{closure#0}], (i64,)&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::path:<span aria-label="end" class="emoji emoji-1f51a" role="img" title="end">:end:</span>:{closure#0}]&gt;&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filters::method::method_is&lt;[closure@warp::get::{closure#0}]&gt;::{closure#0}]&gt;&gt;, [closure@pickpocket::audience::AudienceCtrl::routes::{closure#1}]&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filters::any::Any, [closure@pickpocket::audience::AudienceCtrl::routes::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional&lt;std::string::String&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;std::string::String&gt;, warp::Rejection&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filters::any::Any, [closure@pickpocket::auth::authorization&lt;pickpocket::audience::AudienceCtrl&gt;::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header&lt;std::string::String&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::string::String, warp::Rejection&gt;&gt;&gt;::{closure#0}]&gt;&gt;, [closure@pickpocket::auth::authorization&lt;pickpocket::audience::AudienceCtrl&gt;::{closure#1}]&gt;&gt;, warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filters::any::Any, warp::path::Exact&lt;warp::path::internal::Opaque&lt;pickpocket::audience::AudienceCtrl::routes::__StaticPath&gt;&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::path:<span aria-label="end" class="emoji emoji-1f51a" role="img" title="end">:end:</span>:{closure#0}]&gt;&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::query&lt;pickpocket::audience::Select&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;pickpocket::audience::Select, warp::Rejection&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::FilterFn&lt;[closure@warp::filters::method::method_is&lt;[closure@warp::get::{closure#0}]&gt;::{closure#0}]&gt;&gt;, [closure@pickpocket::audience::AudienceCtrl::routes::{closure#2}]&gt;&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::filters::any::Any, [closure@pickpocket::audience::AudienceCtrl::routes::{closure#0}]&gt;, warp::filter::FilterFn&lt;[closure@warp::filter::filter_fn_one&lt;[closure@warp::header::optional&lt;std::string::String&gt;::{closure#0}], futures_util:<span aria-label="future" class="emoji emoji-1f52e" role="img" title="future">:future:</span>:ready::Ready&lt;std::result::Result&lt;std::option::Option&lt;std::string::String&gt;, warp::Rejection&gt;&gt;&gt;::{closure#0}]&gt;&gt;, warp::filter::and_then::AndThen&lt;warp::filter::and::And&lt;warp::filter:<span aria-label="map" class="emoji emoji-1f5fa" role="img" title="map">:map:</span>:Map&lt;warp::f</p>



<a name="217421745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217421745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217421745">(Nov 20 2020 at 16:12)</a>:</h4>
<p>I see massive type params from <code>warp</code></p>



<a name="217422464"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217422464" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217422464">(Nov 20 2020 at 16:17)</a>:</h4>
<blockquote>
<p>I have a warp 0.2.5 app with about 20 route handlers that was suffering 30+ minute incremental compile times.</p>
</blockquote>
<p>I found this gem in Warp's discord chat. I thought my problems were big!</p>



<a name="217426183"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217426183" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217426183">(Nov 20 2020 at 16:40)</a>:</h4>
<p>Whoa</p>



<a name="217426456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217426456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217426456">(Nov 20 2020 at 16:42)</a>:</h4>
<p>Have you updated to yesterday's release already? I assume since you're using unstable options, you're on a recent-ish nightly but it might be good to update if you haven't for a few weeks. There was a huge compile time regression fixed related to async-await in the most recent release.</p>



<a name="217427917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217427917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217427917">(Nov 20 2020 at 16:52)</a>:</h4>
<p>yeah I'm up to date</p>



<a name="217428871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217428871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217428871">(Nov 20 2020 at 16:58)</a>:</h4>
<p>I searched quickly but didn't find any issues on the rust issue tracker. If you can share the code (and ideally cut it down a bit to a smaller example that still shows the issue) it would probably be worth filing a bug and we can look into it more.</p>



<a name="217429255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217429255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217429255">(Nov 20 2020 at 17:01)</a>:</h4>
<p>this was linked in a warp issue thread that I found: <a href="https://github.com/rust-lang/rust/issues/68666">https://github.com/rust-lang/rust/issues/68666</a>, but I'm clueless if it is relevant</p>



<a name="217430062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217430062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217430062">(Nov 20 2020 at 17:06)</a>:</h4>
<p>at least there's hope for improvements: <a href="https://github.com/rust-lang/rust/pull/69218">https://github.com/rust-lang/rust/pull/69218</a> is in-progress to try and fix that</p>



<a name="217430122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217430122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pl <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217430122">(Nov 20 2020 at 17:07)</a>:</h4>
<p>I figured out how to get the <code>lld</code> linker installed and it shaved off over 60% of the incremental compile time <span aria-label="party ball" class="emoji emoji-1f38a" role="img" title="party ball">:party_ball:</span></p>



<a name="217430310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217430310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217430310">(Nov 20 2020 at 17:08)</a>:</h4>
<p>Awesome!</p>



<a name="217430333"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187831-t-compiler/wg-self-profile/topic/Probing%20incremental%20compilation/near/217430333" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187831-t-compiler/wg-self-profile/topic/Probing.20incremental.20compilation.html#217430333">(Nov 20 2020 at 17:08)</a>:</h4>
<p>Yeah, that issue looks related</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>